package test;

import java.util.HashMap;
import java.util.Map;

public class objects
{
	/** übungen im umgang mit strings. **/
	public objects()
	{

	}
	
	/** Referenztypen sind neben den primitiven Datentypen die zweite wichtige Klasse von Datentypen in Java.
	 * Zu den Referenztypen gehören Objekte, Strings und Arrays.
	 * Weiterhin gibt es die vordefinierte Konstante null, die eine leere Referenz bezeichnet.
	 **/

	public static void main(String [] args)
	{
		// Main mainl = new Main();
		System.out.println("Hello World");
		
		/**
		* Die Zuweisung einer Referenz kopiert lediglich den Verweis auf das betreffende Objekt,
		* das Objekt selbst dagegen bleibt unkopiert.
		* einer Zuweisung zweier Referenztypen zeigen diese also auf ein und dasselbe Objekt.
		* Sollen Referenztypen kopiert werden,
		* so ist ein Aufruf der Methode clone erforderlich
		**/
		Object ref = new Object();

		/** falls man nach einer möglichkeit sucht assoziative arrays zu basteln, wie das in PHP oder AS3/Flex möglich ist 
		 * muss man sich der HashMaps bedienen.
		 */
		// ref["hello"] = "Hello World"; // geht nicht

		Map<String,String> aldiSupplier = new HashMap<String,String>(); 
		aldiSupplier.put( "Carbo, spanischer Sekt", "Freixenet" ); 
		aldiSupplier.put( "ibu Stapelchips", "Bahlsen Chipsletten" ); 
		aldiSupplier.put( "Ko-kra Katzenfutter", "felix Katzenfutter" ); 
		aldiSupplier.put( "Küchenpapier", "Zewa" ); 
		aldiSupplier.put( "Nuss-Nougat-Creme", "Zentis" ); 
		aldiSupplier.put( "Pommes Frites", "McCaine" );

		/**
		 * Die zweite HashMap soll Strings mit Zahlen assoziieren:
		 */
		Map<String,Number> num = new HashMap<String,Number>(); 
		num.put( "zwei", 2 );    // Durch Boxing in Integer(2) 
		num.put( "drei", 3.0 );  // dito. Double(3)

		Object gef = ref; // not an independent copy!
		gef = "Hello Girl"; // manipulation of content ...
		System.out.println(ref); // ... also changes original variable's content.
		/** boolean equals(Object obj)
		protected Object clone()
		
		String toString()
		
		int hashCode()
		**/
	}
}